#ifndef __wMSG_H__
#define __wMSG_H__

#if !WINDOWS_SYSTEM
	#error only windows system supported
#endif

#if WINVER <= 0x0400 || _WIN32_WINNT <= 0x0400
	#pragma message ("requires WINVER must > 0x0400 && _WIN32_WINNT > 0x0400")
	//#error requires WINVER must > 0x0400 && _WIN32_WINNT > 0x0400
#endif
//#define WINVER		0x0500
//#define _WIN32_WINNT	0x0500

//#include <CTL3D.H>
#include <dde.h>
#include <PenWin.h>
#include <IME.h>

#ifndef __AFXPRIV_H__
#define WM_QUERYAFXWNDPROC		0x0360
#define WM_SIZEPARENT			0x0361
#define WM_SETMESSAGESTRING		0x0362
#define WM_IDLEUPDATECMDUI		0x0363
#define WM_INITIALUPDATE		0x0364
#define WM_COMMANDHELP			0x0365
#define WM_HELPHITTEST			0x0366
#define WM_EXITHELPMODE			0x0367
#define WM_RECALCPARENT			0x0368
#define WM_SIZECHILD			0x0369
#define WM_KICKIDLE				0x036A
#define WM_QUERYCENTERWND		0x036B
#define WM_DISABLEMODAL			0x036C
#define WM_FLOATSTATUS			0x036D
#define WM_ACTIVATETOPLEVEL		0x036E
#define WM_QUERY3DCONTROLS		0x036F
#define WM_SOCKET_NOTIFY		0x0373
#define WM_SOCKET_DEAD			0x0374
#define WM_POPMESSAGESTRING		0x0375
#define WM_QUEUE_SENTINEL		0x0379
#endif

#define MSG_2_STR(nMsg) case (nMsg): return _T(#nMsg)
inline LPCTSTR wTransWM_XX(UINT nMsg)
{
	switch(nMsg)
	{
		MSG_2_STR(WM_NULL);
		MSG_2_STR(WM_CREATE);
		MSG_2_STR(WM_DESTROY);
		MSG_2_STR(WM_MOVE);
		MSG_2_STR(WM_SIZE);
		MSG_2_STR(WM_ACTIVATE);
		MSG_2_STR(WM_SETFOCUS);
		MSG_2_STR(WM_KILLFOCUS);
		MSG_2_STR(WM_ENABLE);
		MSG_2_STR(WM_SETREDRAW);
		MSG_2_STR(WM_SETTEXT);
		MSG_2_STR(WM_GETTEXT);
		MSG_2_STR(WM_GETTEXTLENGTH);
		MSG_2_STR(WM_PAINT);
		MSG_2_STR(WM_CLOSE);
		MSG_2_STR(WM_QUERYENDSESSION);
		MSG_2_STR(WM_QUIT);
		MSG_2_STR(WM_QUERYOPEN);
		MSG_2_STR(WM_ERASEBKGND);
		MSG_2_STR(WM_SYSCOLORCHANGE);
		MSG_2_STR(WM_ENDSESSION);
		MSG_2_STR(WM_SHOWWINDOW);
		MSG_2_STR(WM_SETTINGCHANGE);
		MSG_2_STR(WM_DEVMODECHANGE);
		MSG_2_STR(WM_ACTIVATEAPP);
		MSG_2_STR(WM_FONTCHANGE);
		MSG_2_STR(WM_TIMECHANGE);
		MSG_2_STR(WM_CANCELMODE);
		MSG_2_STR(WM_SETCURSOR);
		MSG_2_STR(WM_MOUSEACTIVATE);
		MSG_2_STR(WM_CHILDACTIVATE);
		MSG_2_STR(WM_QUEUESYNC);
		MSG_2_STR(WM_GETMINMAXINFO);
		MSG_2_STR(WM_PAINTICON);
		MSG_2_STR(WM_ICONERASEBKGND);
		MSG_2_STR(WM_NEXTDLGCTL);
		MSG_2_STR(WM_SPOOLERSTATUS);
		MSG_2_STR(WM_DRAWITEM);
		MSG_2_STR(WM_MEASUREITEM);
		MSG_2_STR(WM_DELETEITEM);
		MSG_2_STR(WM_VKEYTOITEM);
		MSG_2_STR(WM_CHARTOITEM);
		MSG_2_STR(WM_SETFONT);
		MSG_2_STR(WM_GETFONT);
		MSG_2_STR(WM_SETHOTKEY);
		MSG_2_STR(WM_GETHOTKEY);
		MSG_2_STR(WM_QUERYDRAGICON);
		MSG_2_STR(WM_COMPAREITEM);
		MSG_2_STR(WM_GETOBJECT);
		MSG_2_STR(WM_COMPACTING);
		MSG_2_STR(WM_WINDOWPOSCHANGING);
		MSG_2_STR(WM_WINDOWPOSCHANGED);
		MSG_2_STR(WM_POWER);
		MSG_2_STR(WM_COPYDATA);
		MSG_2_STR(WM_CANCELJOURNAL);
		MSG_2_STR(WM_NOTIFY);
		MSG_2_STR(WM_INPUTLANGCHANGEREQUEST);
		MSG_2_STR(WM_INPUTLANGCHANGE);
		MSG_2_STR(WM_TCARD);
		MSG_2_STR(WM_HELP);
		MSG_2_STR(WM_USERCHANGED);
		MSG_2_STR(WM_NOTIFYFORMAT);
		MSG_2_STR(WM_CONTEXTMENU);
		MSG_2_STR(WM_STYLECHANGING);
		MSG_2_STR(WM_STYLECHANGED);
		MSG_2_STR(WM_DISPLAYCHANGE);
		MSG_2_STR(WM_GETICON);
		MSG_2_STR(WM_SETICON);
		MSG_2_STR(WM_NCCREATE);
		MSG_2_STR(WM_NCDESTROY);
		MSG_2_STR(WM_NCCALCSIZE);
		MSG_2_STR(WM_NCHITTEST);
		MSG_2_STR(WM_NCPAINT);
		MSG_2_STR(WM_NCACTIVATE);
		MSG_2_STR(WM_GETDLGCODE);
		MSG_2_STR(WM_SYNCPAINT);
		MSG_2_STR(WM_NCMOUSEMOVE);
		MSG_2_STR(WM_NCLBUTTONDOWN);
		MSG_2_STR(WM_NCLBUTTONUP);
		MSG_2_STR(WM_NCLBUTTONDBLCLK);
		MSG_2_STR(WM_NCRBUTTONDOWN);
		MSG_2_STR(WM_NCRBUTTONUP);
		MSG_2_STR(WM_NCRBUTTONDBLCLK);
		MSG_2_STR(WM_NCMBUTTONDOWN);
		MSG_2_STR(WM_NCMBUTTONUP);
		MSG_2_STR(WM_NCMBUTTONDBLCLK);
		MSG_2_STR(EM_GETSEL);
		MSG_2_STR(EM_SETSEL);
		MSG_2_STR(EM_GETRECT);
		MSG_2_STR(EM_SETRECT);
		MSG_2_STR(EM_SETRECTNP);
		MSG_2_STR(EM_SCROLL);
		MSG_2_STR(EM_LINESCROLL);
		MSG_2_STR(EM_SCROLLCARET);
		MSG_2_STR(EM_GETMODIFY);
		MSG_2_STR(EM_SETMODIFY);
		MSG_2_STR(EM_GETLINECOUNT);
		MSG_2_STR(EM_LINEINDEX);
		MSG_2_STR(EM_SETHANDLE);
		MSG_2_STR(EM_GETHANDLE);
		MSG_2_STR(EM_GETTHUMB);
		MSG_2_STR(EM_LINELENGTH);
		MSG_2_STR(EM_REPLACESEL);
		MSG_2_STR(EM_GETLINE);
		MSG_2_STR(EM_SETLIMITTEXT);
		MSG_2_STR(EM_CANUNDO);
		MSG_2_STR(EM_UNDO);
		MSG_2_STR(EM_FMTLINES);
		MSG_2_STR(EM_LINEFROMCHAR);
		MSG_2_STR(EM_SETTABSTOPS);
		MSG_2_STR(EM_SETPASSWORDCHAR);
		MSG_2_STR(EM_EMPTYUNDOBUFFER);
		MSG_2_STR(EM_GETFIRSTVISIBLELINE);
		MSG_2_STR(EM_SETREADONLY);
		MSG_2_STR(EM_SETWORDBREAKPROC);
		MSG_2_STR(EM_GETWORDBREAKPROC);
		MSG_2_STR(EM_GETPASSWORDCHAR);
		MSG_2_STR(EM_SETMARGINS);
		MSG_2_STR(EM_GETMARGINS);
		MSG_2_STR(EM_GETLIMITTEXT);
		MSG_2_STR(EM_POSFROMCHAR);
		MSG_2_STR(EM_CHARFROMPOS);
		MSG_2_STR(EM_SETIMESTATUS);
		MSG_2_STR(EM_GETIMESTATUS);
		MSG_2_STR(SBM_SETPOS);
		MSG_2_STR(SBM_GETPOS);
		MSG_2_STR(SBM_SETRANGE);
		MSG_2_STR(SBM_GETRANGE);
		MSG_2_STR(SBM_ENABLE_ARROWS);
		MSG_2_STR(SBM_SETRANGEREDRAW);
		MSG_2_STR(SBM_SETSCROLLINFO);
		MSG_2_STR(SBM_GETSCROLLINFO);
		MSG_2_STR(BM_GETCHECK);
		MSG_2_STR(BM_SETCHECK);
		MSG_2_STR(BM_GETSTATE);
		MSG_2_STR(BM_SETSTATE);
		MSG_2_STR(BM_SETSTYLE);
		MSG_2_STR(BM_CLICK);
		MSG_2_STR(BM_GETIMAGE);
		MSG_2_STR(BM_SETIMAGE);
		MSG_2_STR(WM_KEYDOWN);
		MSG_2_STR(WM_KEYUP);
		MSG_2_STR(WM_CHAR);
		MSG_2_STR(WM_DEADCHAR);
		MSG_2_STR(WM_SYSKEYDOWN);
		MSG_2_STR(WM_SYSKEYUP);
		MSG_2_STR(WM_SYSCHAR);
		MSG_2_STR(WM_SYSDEADCHAR);
		MSG_2_STR(WM_IME_STARTCOMPOSITION);
		MSG_2_STR(WM_IME_ENDCOMPOSITION);
		MSG_2_STR(WM_IME_COMPOSITION);
		MSG_2_STR(WM_INITDIALOG);
		MSG_2_STR(WM_COMMAND);
		MSG_2_STR(WM_SYSCOMMAND);
		MSG_2_STR(WM_TIMER);
		MSG_2_STR(WM_HSCROLL);
		MSG_2_STR(WM_VSCROLL);
		MSG_2_STR(WM_INITMENU);
		MSG_2_STR(WM_INITMENUPOPUP);
		MSG_2_STR(WM_MENUSELECT);
		MSG_2_STR(WM_MENUCHAR);
		MSG_2_STR(WM_ENTERIDLE);
		MSG_2_STR(WM_MENURBUTTONUP);
		MSG_2_STR(WM_MENUDRAG);
		MSG_2_STR(WM_MENUGETOBJECT);
		MSG_2_STR(WM_UNINITMENUPOPUP);
		MSG_2_STR(WM_MENUCOMMAND);
		MSG_2_STR(WM_CTLCOLORMSGBOX);
		MSG_2_STR(WM_CTLCOLOREDIT);
		MSG_2_STR(WM_CTLCOLORLISTBOX);
		MSG_2_STR(WM_CTLCOLORBTN);
		MSG_2_STR(WM_CTLCOLORDLG);
		MSG_2_STR(WM_CTLCOLORSCROLLBAR);
		MSG_2_STR(WM_CTLCOLORSTATIC);
		MSG_2_STR(CB_GETEDITSEL);
		MSG_2_STR(CB_LIMITTEXT);
		MSG_2_STR(CB_SETEDITSEL);
		MSG_2_STR(CB_ADDSTRING);
		MSG_2_STR(CB_DELETESTRING);
		MSG_2_STR(CB_DIR);
		MSG_2_STR(CB_GETCOUNT);
		MSG_2_STR(CB_GETCURSEL);
		MSG_2_STR(CB_GETLBTEXT);
		MSG_2_STR(CB_GETLBTEXTLEN);
		MSG_2_STR(CB_INSERTSTRING);
		MSG_2_STR(CB_RESETCONTENT);
		MSG_2_STR(CB_FINDSTRING);
		MSG_2_STR(CB_SELECTSTRING);
		MSG_2_STR(CB_SETCURSEL);
		MSG_2_STR(CB_SHOWDROPDOWN);
		MSG_2_STR(CB_GETITEMDATA);
		MSG_2_STR(CB_SETITEMDATA);
		MSG_2_STR(CB_GETDROPPEDCONTROLRECT);
		MSG_2_STR(CB_SETITEMHEIGHT);
		MSG_2_STR(CB_GETITEMHEIGHT);
		MSG_2_STR(CB_SETEXTENDEDUI);
		MSG_2_STR(CB_GETEXTENDEDUI);
		MSG_2_STR(CB_GETDROPPEDSTATE);
		MSG_2_STR(CB_FINDSTRINGEXACT);
		MSG_2_STR(CB_SETLOCALE);
		MSG_2_STR(CB_GETLOCALE);
		MSG_2_STR(CB_GETTOPINDEX);
		MSG_2_STR(CB_SETTOPINDEX);
		MSG_2_STR(CB_GETHORIZONTALEXTENT);
		MSG_2_STR(CB_SETHORIZONTALEXTENT);
		MSG_2_STR(CB_GETDROPPEDWIDTH);
		MSG_2_STR(CB_SETDROPPEDWIDTH);
		MSG_2_STR(CB_INITSTORAGE);
		MSG_2_STR(STM_SETICON);
		MSG_2_STR(STM_GETICON);
		MSG_2_STR(STM_SETIMAGE);
		MSG_2_STR(STM_GETIMAGE);
		MSG_2_STR(LB_ADDSTRING);
		MSG_2_STR(LB_INSERTSTRING);
		MSG_2_STR(LB_DELETESTRING);
		MSG_2_STR(LB_SELITEMRANGEEX);
		MSG_2_STR(LB_RESETCONTENT);
		MSG_2_STR(LB_SETSEL);
		MSG_2_STR(LB_SETCURSEL);
		MSG_2_STR(LB_GETSEL);
		MSG_2_STR(LB_GETCURSEL);
		MSG_2_STR(LB_GETTEXT);
		MSG_2_STR(LB_GETTEXTLEN);
		MSG_2_STR(LB_GETCOUNT);
		MSG_2_STR(LB_SELECTSTRING);
		MSG_2_STR(LB_DIR);
		MSG_2_STR(LB_GETTOPINDEX);
		MSG_2_STR(LB_FINDSTRING);
		MSG_2_STR(LB_GETSELCOUNT);
		MSG_2_STR(LB_GETSELITEMS);
		MSG_2_STR(LB_SETTABSTOPS);
		MSG_2_STR(LB_GETHORIZONTALEXTENT);
		MSG_2_STR(LB_SETHORIZONTALEXTENT);
		MSG_2_STR(LB_SETCOLUMNWIDTH);
		MSG_2_STR(LB_ADDFILE);
		MSG_2_STR(LB_SETTOPINDEX);
		MSG_2_STR(LB_GETITEMRECT);
		MSG_2_STR(LB_GETITEMDATA);
		MSG_2_STR(LB_SETITEMDATA);
		MSG_2_STR(LB_SELITEMRANGE);
		MSG_2_STR(LB_SETANCHORINDEX);
		MSG_2_STR(LB_GETANCHORINDEX);
		MSG_2_STR(LB_SETCARETINDEX);
		MSG_2_STR(LB_GETCARETINDEX);
		MSG_2_STR(LB_SETITEMHEIGHT);
		MSG_2_STR(LB_GETITEMHEIGHT);
		MSG_2_STR(LB_FINDSTRINGEXACT);
		MSG_2_STR(LB_SETLOCALE);
		MSG_2_STR(LB_GETLOCALE);
		MSG_2_STR(LB_SETCOUNT);
		MSG_2_STR(LB_INITSTORAGE);
		MSG_2_STR(LB_ITEMFROMPOINT);
		MSG_2_STR(WM_MOUSEMOVE);
		MSG_2_STR(WM_LBUTTONDOWN);
		MSG_2_STR(WM_LBUTTONUP);
		MSG_2_STR(WM_LBUTTONDBLCLK);
		MSG_2_STR(WM_RBUTTONDOWN);
		MSG_2_STR(WM_RBUTTONUP);
		MSG_2_STR(WM_RBUTTONDBLCLK);
		MSG_2_STR(WM_MBUTTONDOWN);
		MSG_2_STR(WM_MBUTTONUP);
		MSG_2_STR(WM_MBUTTONDBLCLK);
		MSG_2_STR(WM_MOUSEWHEEL);
		MSG_2_STR(WM_PARENTNOTIFY);
		MSG_2_STR(WM_ENTERMENULOOP);
		MSG_2_STR(WM_EXITMENULOOP);
		MSG_2_STR(WM_NEXTMENU);
		MSG_2_STR(WM_SIZING);
		MSG_2_STR(WM_CAPTURECHANGED);
		MSG_2_STR(WM_MOVING);
		MSG_2_STR(WM_POWERBROADCAST);
		MSG_2_STR(WM_DEVICECHANGE);
		MSG_2_STR(WM_MDICREATE);
		MSG_2_STR(WM_MDIDESTROY);
		MSG_2_STR(WM_MDIACTIVATE);
		MSG_2_STR(WM_MDIRESTORE);
		MSG_2_STR(WM_MDINEXT);
		MSG_2_STR(WM_MDIMAXIMIZE);
		MSG_2_STR(WM_MDITILE);
		MSG_2_STR(WM_MDICASCADE);
		MSG_2_STR(WM_MDIICONARRANGE);
		MSG_2_STR(WM_MDIGETACTIVE);
		MSG_2_STR(WM_MDISETMENU);
		MSG_2_STR(WM_ENTERSIZEMOVE);
		MSG_2_STR(WM_EXITSIZEMOVE);
		MSG_2_STR(WM_DROPFILES);
		MSG_2_STR(WM_MDIREFRESHMENU);
		MSG_2_STR(WM_IME_SETCONTEXT);
		MSG_2_STR(WM_IME_NOTIFY);
		MSG_2_STR(WM_IME_CONTROL);
		MSG_2_STR(WM_IME_COMPOSITIONFULL);
		MSG_2_STR(WM_IME_SELECT);
		MSG_2_STR(WM_IME_CHAR);
		MSG_2_STR(WM_IME_REQUEST);
		MSG_2_STR(WM_IME_KEYDOWN);
		MSG_2_STR(WM_IME_KEYUP);
		MSG_2_STR(WM_MOUSEHOVER);
		MSG_2_STR(WM_MOUSELEAVE);
		MSG_2_STR(WM_CUT);
		MSG_2_STR(WM_COPY);
		MSG_2_STR(WM_PASTE);
		MSG_2_STR(WM_CLEAR);
		MSG_2_STR(WM_UNDO);
		MSG_2_STR(WM_RENDERFORMAT);
		MSG_2_STR(WM_RENDERALLFORMATS);
		MSG_2_STR(WM_DESTROYCLIPBOARD);
		MSG_2_STR(WM_DRAWCLIPBOARD);
		MSG_2_STR(WM_PAINTCLIPBOARD);
		MSG_2_STR(WM_VSCROLLCLIPBOARD);
		MSG_2_STR(WM_SIZECLIPBOARD);
		MSG_2_STR(WM_ASKCBFORMATNAME);
		MSG_2_STR(WM_CHANGECBCHAIN);
		MSG_2_STR(WM_HSCROLLCLIPBOARD);
		MSG_2_STR(WM_QUERYNEWPALETTE);
		MSG_2_STR(WM_PALETTEISCHANGING);
		MSG_2_STR(WM_PALETTECHANGED);
		MSG_2_STR(WM_HOTKEY);
		MSG_2_STR(WM_PRINT);
		MSG_2_STR(WM_PRINTCLIENT);
		
		MSG_2_STR(WM_QUERYAFXWNDPROC);
		MSG_2_STR(WM_SIZEPARENT);
		MSG_2_STR(WM_SETMESSAGESTRING);
		MSG_2_STR(WM_IDLEUPDATECMDUI);
		MSG_2_STR(WM_INITIALUPDATE);
		MSG_2_STR(WM_COMMANDHELP);
		MSG_2_STR(WM_HELPHITTEST);
		MSG_2_STR(WM_EXITHELPMODE);
		MSG_2_STR(WM_RECALCPARENT);
		MSG_2_STR(WM_SIZECHILD);
		MSG_2_STR(WM_KICKIDLE);
		MSG_2_STR(WM_QUERYCENTERWND);
		MSG_2_STR(WM_DISABLEMODAL);
		MSG_2_STR(WM_FLOATSTATUS);
		MSG_2_STR(WM_ACTIVATETOPLEVEL);
		MSG_2_STR(WM_QUERY3DCONTROLS);
		MSG_2_STR(WM_SOCKET_NOTIFY);
		MSG_2_STR(WM_SOCKET_DEAD);
		MSG_2_STR(WM_POPMESSAGESTRING);
		MSG_2_STR(WM_QUEUE_SENTINEL);
		
		// 0x380X
		MSG_2_STR(WM_PENMISCINFO);
		MSG_2_STR(WM_PENCTL);
		MSG_2_STR(WM_PENMISC);
		MSG_2_STR(WM_CTLINIT);
		MSG_2_STR(WM_PENEVENT);
		
		//0x3E0X
		MSG_2_STR(WM_DDE_INITIATE);
		MSG_2_STR(WM_DDE_TERMINATE);
		MSG_2_STR(WM_DDE_ADVISE);
		MSG_2_STR(WM_DDE_UNADVISE);
		MSG_2_STR(WM_DDE_ACK);
		MSG_2_STR(WM_DDE_DATA);
		MSG_2_STR(WM_DDE_REQUEST);
		MSG_2_STR(WM_DDE_POKE);
		MSG_2_STR(WM_DDE_EXECUTE);
		
		// 0x04XX
		MSG_2_STR(TBM_GETPOS|DM_GETDEFID);
		MSG_2_STR(DM_SETDEFID|HKM_SETHOTKEY|PBM_SETRANGE|TBM_GETRANGEMIN|TB_ENABLEBUTTON|TTM_ACTIVATE);
		MSG_2_STR(CBEM_SETIMAGELIST|DM_REPOSITION|HKM_GETHOTKEY|PBM_SETPOS|RB_DELETEBAND|TBM_GETRANGEMAX|TB_CHECKBUTTON);
		MSG_2_STR(CBEM_GETIMAGELIST|HKM_SETRULES|PBM_DELTAPOS|RB_GETBARINFO|TBM_GETTIC|TB_PRESSBUTTON|TTM_SETDELAYTIME);
		MSG_2_STR(PBM_SETSTEP|RB_SETBARINFO|SB_SETPARTS|TBM_SETTIC|TB_HIDEBUTTON);
		MSG_2_STR(PBM_STEPIT|TBM_SETPOS|TB_INDETERMINATE);
		MSG_2_STR(CBEM_GETCOMBOCONTROL|PBM_SETRANGE32|SB_GETPARTS|TBM_SETRANGE|TB_MARKBUTTON);
		MSG_2_STR(CBEM_GETEDITCONTROL|PBM_GETRANGE|RB_SETPARENT|SB_GETBORDERS|TBM_SETRANGEMIN|TTM_RELAYEVENT);
		MSG_2_STR(CBEM_SETEXSTYLE|PBM_GETPOS|RB_HITTEST|SB_SETMINHEIGHT|TBM_SETRANGEMAX);
		MSG_2_STR(CBEM_GETEXSTYLE|PBM_SETBARCOLOR|RB_GETRECT|SB_SIMPLE|TBM_CLEARTICS|TB_ISBUTTONENABLED);
		MSG_2_STR(CBEM_HASEDITCHANGED|RB_INSERTBAND|SB_GETRECT|TBM_SETSEL|TB_ISBUTTONCHECKED);
		MSG_2_STR(CBEM_INSERTITEM|RB_SETBANDINFO|SB_SETTEXT|TBM_SETSELSTART|TB_ISBUTTONPRESSED);
//		MSG_2_STR(CBEM_SETITEM|RB_GETBANDCOUNT|SB_GETTEXTLENGTH|TBM_SETSELEND|TB_ISBUTTONHIDDEN);
//		MSG_2_STR(CBEM_GETITEM|RB_GETROWCOUNT|SB_GETTEXT|TB_ISBUTTONINDETERMINATE|TTM_GETTOOLCOUNT);
		MSG_2_STR(RB_GETROWHEIGHT|SB_ISSIMPLE|TBM_GETPTICS|TB_ISBUTTONHIGHLIGHTED);
//		MSG_2_STR(SB_SETICON|TBM_GETTICPOS);
		MSG_2_STR(RB_IDTOINDEX|TBM_GETNUMTICS|TTM_WINDOWFROMPOINT);
		MSG_2_STR(RB_GETTOOLTIPS|SB_SETTIPTEXT|TBM_GETSELSTART|TB_SETSTATE|TTM_TRACKACTIVATE);
		MSG_2_STR(RB_SETTOOLTIPS|TBM_GETSELEND|TB_GETSTATE|TTM_TRACKPOSITION);
		MSG_2_STR(RB_SETBKCOLOR|SB_GETTIPTEXT|TBM_CLEARSEL|TB_ADDBITMAP|TTM_SETTIPBKCOLOR);
		MSG_2_STR(RB_GETBKCOLOR|SB_GETICON|TBM_SETTICFREQ|TB_ADDBUTTONSA|TTM_SETTIPTEXTCOLOR);
		MSG_2_STR(RB_SETTEXTCOLOR|TBM_SETPAGESIZE|TB_INSERTBUTTONA|TTM_GETDELAYTIME);
		MSG_2_STR(RB_GETTEXTCOLOR|TBM_GETPAGESIZE|TB_DELETEBUTTON|TTM_GETTIPBKCOLOR);
		MSG_2_STR(RB_SIZETORECT|TBM_SETLINESIZE|TB_GETBUTTON|TTM_GETTIPTEXTCOLOR);
		MSG_2_STR(RB_BEGINDRAG|TBM_GETLINESIZE|TB_BUTTONCOUNT|TTM_SETMAXTIPWIDTH);
		MSG_2_STR(RB_ENDDRAG|TBM_GETTHUMBRECT|TB_COMMANDTOINDEX|TTM_GETMAXTIPWIDTH);
		MSG_2_STR(RB_DRAGMOVE|TBM_GETCHANNELRECT|TTM_SETMARGIN);
		MSG_2_STR(RB_GETBARHEIGHT|TBM_SETTHUMBLENGTH|TB_CUSTOMIZE|TTM_GETMARGIN);
		MSG_2_STR(RB_GETBANDINFO|TBM_GETTHUMBLENGTH|TTM_POP);
//		MSG_2_STR(TBM_SETTOOLTIPS|TB_GETITEMRECT|TTM_UPDATE);
		MSG_2_STR(RB_MINIMIZEBAND|TBM_GETTOOLTIPS|TB_BUTTONSTRUCTSIZE);
		MSG_2_STR(RB_MAXIMIZEBAND|TBM_SETTIPSIDE|TB_SETBUTTONSIZE);
		MSG_2_STR(TBM_SETBUDDY|TB_SETBITMAPSIZE);
		MSG_2_STR(TBM_GETBUDDY|TB_AUTOSIZE);
		MSG_2_STR(RB_GETBANDBORDERS);
		MSG_2_STR(RB_GETBANDBORDERS|RB_SHOWBAND|TB_GETTOOLTIPS);
		MSG_2_STR(TB_SETTOOLTIPS);
		MSG_2_STR(RB_SETPALETTE|TB_SETPARENT);
		MSG_2_STR(RB_GETPALETTE);
		MSG_2_STR(RB_MOVEBAND|TB_SETROWS);
		MSG_2_STR(TB_GETROWS);
		MSG_2_STR(TB_GETBITMAPFLAGS);
		MSG_2_STR(TB_SETCMDID);
		MSG_2_STR(TB_CHANGEBITMAP);
		MSG_2_STR(TB_GETBITMAP);
		MSG_2_STR(TB_REPLACEBITMAP);
		MSG_2_STR(TB_SETINDENT);
		MSG_2_STR(TB_SETIMAGELIST);
		MSG_2_STR(TB_GETIMAGELIST);
//		MSG_2_STR(EM_CANPASTE|TB_LOADIMAGES|TTM_ADDTOOL);
//		MSG_2_STR(EM_DISPLAYBAND|TB_GETRECT|TTM_DELTOOL);
//		MSG_2_STR(EM_EXGETSEL|TB_SETHOTIMAGELIST|TTM_NEWTOOLRECT);
//		MSG_2_STR(EM_EXLIMITTEXT|TB_GETHOTIMAGELIST|TTM_GETTOOLINFO);
//		MSG_2_STR(EM_EXLINEFROMCHAR|TB_SETDISABLEDIMAGELIST|TTM_SETTOOLINFO);
//		MSG_2_STR(EM_EXSETSEL|TB_GETDISABLEDIMAGELIST|TTM_HITTEST);
//		MSG_2_STR(EM_FINDTEXT|TB_SETSTYLE|TTM_GETTEXT);
//		MSG_2_STR(EM_FORMATRANGE|TB_GETSTYLE|TTM_UPDATETIPTEXT);
//		MSG_2_STR(EM_GETCHARFORMAT|TB_GETBUTTONSIZE|TTM_ENUMTOOLS);
//		MSG_2_STR(EM_GETEVENTMASK|TB_SETBUTTONWIDTH|TTM_GETCURRENTTOOL);
//		MSG_2_STR(EM_GETOLEINTERFACE|TB_SETMAXTEXTROWS);
//		MSG_2_STR(EM_GETPARAFORMAT|TB_GETTEXTROWS);
//		MSG_2_STR(EM_GETSELTEXT|TB_GETOBJECT);
//		MSG_2_STR(EM_HIDESELECTION|TB_GETBUTTONINFO);
//		MSG_2_STR(EM_PASTESPECIAL|TB_SETBUTTONINFO);
//		MSG_2_STR(EM_REQUESTRESIZE);
//		MSG_2_STR(EM_SELECTIONTYPE);
//		MSG_2_STR(EM_SETBKGNDCOLOR|TB_INSERTBUTTONW);
//		MSG_2_STR(EM_SETCHARFORMAT|TB_ADDBUTTONSW);
//		MSG_2_STR(EM_SETEVENTMASK|TB_HITTEST);
//		MSG_2_STR(EM_SETOLECALLBACK);
//		MSG_2_STR(EM_SETPARAFORMAT|TB_GETHOTITEM);
//		MSG_2_STR(EM_SETTARGETDEVICE|TB_SETHOTITEM);
//		MSG_2_STR(EM_STREAMIN|TB_SETANCHORHIGHLIGHT);
//		MSG_2_STR(EM_STREAMOUT|TB_GETANCHORHIGHLIGHT);
//		MSG_2_STR(EM_GETTEXTRANGE|TB_GETBUTTONTEXT);
//		MSG_2_STR(EM_FINDWORDBREAK|TB_SAVERESTORE);
//		MSG_2_STR(EM_SETOPTIONS|TB_ADDSTRING);
//		MSG_2_STR(EM_GETOPTIONS);
//		MSG_2_STR(EM_FINDTEXTEX|TB_GETINSERTMARK);
//		MSG_2_STR(EM_GETWORDBREAKPROCEX|TB_SETINSERTMARK);
//		MSG_2_STR(EM_SETWORDBREAKPROCEX|TB_INSERTMARKHITTEST);
//		MSG_2_STR(EM_SETUNDOLIMIT|TB_MOVEBUTTON);
		MSG_2_STR(TB_GETMAXSIZE);
//		MSG_2_STR(EM_REDO|TB_SETEXTENDEDSTYLE);
//		MSG_2_STR(EM_CANREDO|TB_GETEXTENDEDSTYLE);
//		MSG_2_STR(EM_GETUNDONAME|TB_GETPADDING);
//		MSG_2_STR(EM_GETREDONAME|TB_SETPADDING);
//		MSG_2_STR(EM_STOPGROUPTYPING|TB_SETINSERTMARKCOLOR);
//		MSG_2_STR(EM_SETTEXTMODE|TB_GETINSERTMARKCOLOR);
//		MSG_2_STR(EM_GETTEXTMODE|TB_MAPACCELERATOR);
//		MSG_2_STR(EM_AUTOURLDETECT);
//		MSG_2_STR(EM_GETAUTOURLDETECT);
//		MSG_2_STR(EM_SETPALETTE);
//		MSG_2_STR(EM_GETTEXTEX);
//		MSG_2_STR(EM_GETTEXTLENGTHEX);
//		MSG_2_STR(EM_SETPUNCTUATION|IPM_CLEARADDRESS);
//		MSG_2_STR(ACM_PLAY|EM_GETPUNCTUATION|IPM_SETADDRESS|UDM_SETRANGE);
//		MSG_2_STR(ACM_STOP|EM_SETWORDWRAPMODE|IPM_GETADDRESS|UDM_GETRANGE);
//		MSG_2_STR(ACM_OPEN|EM_GETWORDWRAPMODE|IPM_SETRANGE|UDM_SETPOS);
//		MSG_2_STR(EM_SETIMECOLOR|IPM_SETFOCUS|UDM_GETPOS);
//		MSG_2_STR(EM_GETIMECOLOR|IPM_ISBLANK|UDM_SETBUDDY);
//		MSG_2_STR(EM_SETIMEOPTIONS|UDM_GETBUDDY);
//		MSG_2_STR(EM_GETIMEOPTIONS|UDM_SETACCEL);
//		MSG_2_STR(EM_CONVPOSITION|UDM_GETACCEL);
		MSG_2_STR(UDM_SETBASE);
		MSG_2_STR(UDM_GETBASE);
//		MSG_2_STR(UDM_SETRANGE32);
		MSG_2_STR(UDM_GETRANGE32);
//		MSG_2_STR(EM_SETLANGOPTIONS);
//		MSG_2_STR(EM_GETLANGOPTIONS);
//		MSG_2_STR(EM_GETIMECOMPMODE);
		
		// 0x10XX
		MSG_2_STR(LVM_GETBKCOLOR);
		MSG_2_STR(DTM_GETSYSTEMTIME|LVM_SETBKCOLOR|MCM_GETCURSEL);
		MSG_2_STR(DTM_SETSYSTEMTIME|LVM_GETIMAGELIST|MCM_SETCURSEL);
		MSG_2_STR(DTM_GETRANGE|LVM_SETIMAGELIST|MCM_GETMAXSELCOUNT);
		MSG_2_STR(DTM_SETRANGE|LVM_GETITEMCOUNT|MCM_SETMAXSELCOUNT);
		MSG_2_STR(MCM_GETSELRANGE);
		MSG_2_STR(DTM_SETMCCOLOR|MCM_SETSELRANGE);
		MSG_2_STR(DTM_GETMCCOLOR|MCM_GETMONTHRANGE);
		MSG_2_STR(DTM_GETMONTHCAL|LVM_DELETEITEM|MCM_SETDAYSTATE);
		MSG_2_STR(DTM_SETMCFONT|LVM_DELETEALLITEMS|MCM_GETMINREQRECT);
		MSG_2_STR(DTM_GETMCFONT|LVM_GETCALLBACKMASK|MCM_SETCOLOR);
		MSG_2_STR(LVM_SETCALLBACKMASK|MCM_GETCOLOR);
		MSG_2_STR(LVM_GETNEXTITEM|MCM_SETTODAY);
		MSG_2_STR(MCM_GETTODAY);
		MSG_2_STR(LVM_GETITEMRECT|MCM_HITTEST);
		MSG_2_STR(LVM_SETITEMPOSITION|MCM_SETFIRSTDAYOFWEEK);
		MSG_2_STR(LVM_GETITEMPOSITION|MCM_GETFIRSTDAYOFWEEK);
		MSG_2_STR(MCM_GETRANGE);
		MSG_2_STR(LVM_HITTEST|MCM_SETRANGE);
		MSG_2_STR(LVM_ENSUREVISIBLE|MCM_GETMONTHDELTA);
		MSG_2_STR(LVM_SCROLL|MCM_SETMONTHDELTA);
		MSG_2_STR(LVM_REDRAWITEMS|MCM_GETMAXTODAYWIDTH);
		MSG_2_STR(LVM_ARRANGE);
		MSG_2_STR(LVM_GETEDITCONTROL);
		MSG_2_STR(LVM_DELETECOLUMN);
		MSG_2_STR(LVM_GETCOLUMNWIDTH);
		MSG_2_STR(LVM_SETCOLUMNWIDTH);
		MSG_2_STR(LVM_GETHEADER);
		MSG_2_STR(LVM_CREATEDRAGIMAGE);
		MSG_2_STR(LVM_GETVIEWRECT);
		MSG_2_STR(LVM_GETTEXTCOLOR);
		MSG_2_STR(LVM_SETTEXTCOLOR);
		MSG_2_STR(LVM_GETTEXTBKCOLOR);
		MSG_2_STR(LVM_SETTEXTBKCOLOR);
		MSG_2_STR(LVM_GETTOPINDEX);
		MSG_2_STR(LVM_GETCOUNTPERPAGE);
		MSG_2_STR(LVM_GETORIGIN);
		MSG_2_STR(LVM_UPDATE);
		MSG_2_STR(LVM_SETITEMSTATE);
		MSG_2_STR(LVM_GETITEMSTATE);
		MSG_2_STR(LVM_SETITEMCOUNT);
		MSG_2_STR(LVM_SORTITEMS);
		MSG_2_STR(LVM_SETITEMPOSITION32);
		MSG_2_STR(DTM_SETFORMAT|LVM_GETSELECTEDCOUNT);
		MSG_2_STR(LVM_GETITEMSPACING);
		MSG_2_STR(LVM_SETICONSPACING);
		MSG_2_STR(LVM_SETEXTENDEDLISTVIEWSTYLE);
//		MSG_2_STR(LVM_GETEXTENDEDLISTVIEWSTYLE);
		MSG_2_STR(LVM_GETSUBITEMRECT);
		MSG_2_STR(LVM_SUBITEMHITTEST);
		MSG_2_STR(LVM_SETCOLUMNORDERARRAY);
		MSG_2_STR(LVM_GETCOLUMNORDERARRAY);
		MSG_2_STR(LVM_SETHOTITEM);
		MSG_2_STR(LVM_GETHOTITEM);
		MSG_2_STR(LVM_SETHOTCURSOR);
		MSG_2_STR(LVM_GETHOTCURSOR);
		MSG_2_STR(LVM_APPROXIMATEVIEWRECT);
		MSG_2_STR(LVM_SETWORKAREAS);
		MSG_2_STR(LVM_GETSELECTIONMARK);
		MSG_2_STR(LVM_SETSELECTIONMARK);
		MSG_2_STR(LVM_GETWORKAREAS);
		MSG_2_STR(LVM_SETHOVERTIME);
		MSG_2_STR(LVM_GETHOVERTIME);
		MSG_2_STR(LVM_GETNUMBEROFWORKAREAS);
		MSG_2_STR(LVM_SETTOOLTIPS);
//		MSG_2_STR(LVM_GETITEM);
//		MSG_2_STR(LVM_SETITEM);
//		MSG_2_STR(LVM_INSERTITEM);
		MSG_2_STR(LVM_GETTOOLTIPS);
//		MSG_2_STR(LVM_FINDITEM);
//		MSG_2_STR(LVM_GETSTRINGWIDTH);
		MSG_2_STR(LVM_GETCOLUMN);
		MSG_2_STR(LVM_SETCOLUMN);
		MSG_2_STR(LVM_INSERTCOLUMN);
		MSG_2_STR(LVM_GETITEMTEXT);
		MSG_2_STR(LVM_SETITEMTEXT);
		MSG_2_STR(LVM_GETISEARCHSTRING);
		MSG_2_STR(LVM_EDITLABEL);
		MSG_2_STR(LVM_SETBKIMAGE);
		MSG_2_STR(LVM_GETBKIMAGE);
		
		// 0x11XX
		MSG_2_STR(TVM_DELETEITEM);
		MSG_2_STR(TVM_EXPAND);
		MSG_2_STR(TVM_GETITEMRECT);
		MSG_2_STR(TVM_GETCOUNT);
		MSG_2_STR(TVM_GETINDENT);
		MSG_2_STR(TVM_SETINDENT);
		MSG_2_STR(TVM_GETIMAGELIST);
		MSG_2_STR(TVM_SETIMAGELIST);
		MSG_2_STR(TVM_GETNEXTITEM);
		MSG_2_STR(TVM_SELECTITEM);
		MSG_2_STR(TVM_GETEDITCONTROL);
		MSG_2_STR(TVM_GETVISIBLECOUNT);
		MSG_2_STR(TVM_HITTEST);
		MSG_2_STR(TVM_CREATEDRAGIMAGE);
		MSG_2_STR(TVM_SORTCHILDREN);
		MSG_2_STR(TVM_ENSUREVISIBLE);
		MSG_2_STR(TVM_SORTCHILDRENCB);
		MSG_2_STR(TVM_ENDEDITLABELNOW);
		MSG_2_STR(TVM_SETTOOLTIPS);
		MSG_2_STR(TVM_GETTOOLTIPS);
		MSG_2_STR(TVM_SETINSERTMARK);
		MSG_2_STR(TVM_SETITEMHEIGHT);
		MSG_2_STR(TVM_GETITEMHEIGHT);
		MSG_2_STR(TVM_SETBKCOLOR);
		MSG_2_STR(TVM_SETTEXTCOLOR);
		MSG_2_STR(TVM_GETBKCOLOR);
		MSG_2_STR(TVM_GETTEXTCOLOR);
		MSG_2_STR(TVM_SETSCROLLTIME);
		MSG_2_STR(TVM_GETSCROLLTIME);
		MSG_2_STR(TVM_SETINSERTMARKCOLOR);
		MSG_2_STR(TVM_GETINSERTMARKCOLOR);
		MSG_2_STR(TVM_INSERTITEM);
		MSG_2_STR(TVM_GETITEM);
		MSG_2_STR(TVM_SETITEM);
		MSG_2_STR(TVM_GETISEARCHSTRING);
		MSG_2_STR(TVM_EDITLABEL);
		
/*
		// 0x11FX
		MSG_2_STR(WM_DLGBORDER);
		MSG_2_STR(WM_DLGSUBCLASS);
		MSG_2_STR(CTL3D_CTLCOLORMSGBOX);
		MSG_2_STR(CTL3D_CTLCOLOREDIT);
		MSG_2_STR(CTL3D_CTLCOLORLISTBOX);
		MSG_2_STR(CTL3D_CTLCOLORBTN);
		MSG_2_STR(CTL3D_CTLCOLORSCROLLBAR);
		MSG_2_STR(CTL3D_CTLCOLORSTATIC);
		MSG_2_STR(CTL3D_CTLCOLORDLG);
*/

		// 0x 12XX
		MSG_2_STR(HDM_GETITEMCOUNT);
		MSG_2_STR(HDM_DELETEITEM);
		MSG_2_STR(HDM_LAYOUT);
		MSG_2_STR(HDM_HITTEST);
		MSG_2_STR(HDM_GETITEMRECT);
		MSG_2_STR(HDM_SETIMAGELIST);
		MSG_2_STR(HDM_GETIMAGELIST);
		MSG_2_STR(HDM_INSERTITEM);
		MSG_2_STR(HDM_GETITEM);
		MSG_2_STR(HDM_SETITEM);
		MSG_2_STR(HDM_ORDERTOINDEX);
		MSG_2_STR(HDM_CREATEDRAGIMAGE);
		MSG_2_STR(HDM_GETORDERARRAY);
		MSG_2_STR(HDM_SETORDERARRAY);
		MSG_2_STR(HDM_SETHOTDIVIDER);
		
		// 0x13XX
		MSG_2_STR(TCM_GETIMAGELIST);
		MSG_2_STR(TCM_SETIMAGELIST);
		MSG_2_STR(TCM_GETITEMCOUNT);
		MSG_2_STR(TCM_DELETEITEM);
		MSG_2_STR(TCM_DELETEALLITEMS);
		MSG_2_STR(TCM_GETITEMRECT);
		MSG_2_STR(TCM_GETCURSEL);
		MSG_2_STR(TCM_SETCURSEL);
		MSG_2_STR(TCM_HITTEST);
		MSG_2_STR(TCM_SETITEMEXTRA);
		MSG_2_STR(TCM_ADJUSTRECT);
		MSG_2_STR(TCM_SETITEMSIZE);
		MSG_2_STR(TCM_REMOVEIMAGE);
		MSG_2_STR(TCM_SETPADDING);
		MSG_2_STR(TCM_GETROWCOUNT);
		MSG_2_STR(TCM_GETTOOLTIPS);
		MSG_2_STR(TCM_SETTOOLTIPS);
		MSG_2_STR(TCM_GETCURFOCUS);
		MSG_2_STR(TCM_SETCURFOCUS);
		MSG_2_STR(TCM_SETMINTABWIDTH);
		MSG_2_STR(TCM_DESELECTALL);
		MSG_2_STR(TCM_HIGHLIGHTITEM);
		MSG_2_STR(TCM_SETEXTENDEDSTYLE);
		MSG_2_STR(TCM_GETEXTENDEDSTYLE);
		MSG_2_STR(TCM_GETITEM);
		MSG_2_STR(TCM_SETITEM);
		MSG_2_STR(TCM_INSERTITEM);
		
		//0x14XX
		MSG_2_STR(PGM_SETCHILD);
		MSG_2_STR(PGM_RECALCSIZE);
		MSG_2_STR(PGM_FORWARDMOUSE);
		MSG_2_STR(PGM_SETBKCOLOR);
		MSG_2_STR(PGM_GETBKCOLOR);
		MSG_2_STR(PGM_SETBORDER);
		MSG_2_STR(PGM_GETBORDER);
		MSG_2_STR(PGM_SETPOS);
		MSG_2_STR(PGM_GETPOS);
		MSG_2_STR(PGM_SETBUTTONSIZE);
		MSG_2_STR(PGM_GETBUTTONSIZE);
		MSG_2_STR(PGM_GETBUTTONSTATE);
		
		// 0x2XXX
		MSG_2_STR(CCM_SETBKCOLOR);
		MSG_2_STR(CCM_SETCOLORSCHEME);
		MSG_2_STR(CCM_GETCOLORSCHEME);
		MSG_2_STR(CCM_GETDROPTARGET);
		MSG_2_STR(CCM_SETUNICODEFORMAT);
		MSG_2_STR(CCM_GETUNICODEFORMAT);
		
		default:
#define WM_REFLECT_BASE 0xBC00
			if((nMsg & WM_REFLECT_BASE) == 0xBC00)
				return _T("WM_REFLECT_XX");
	}
	static TCHAR msgBuf[64] = _T("");
	_stprintf(msgBuf, _T("UNKNOW_MESSAGE: [%.8x]"), nMsg);
	return msgBuf;
}

#endif //__wMSG_H__